using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;
using Common; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using SystemFrameworks;

namespace MinCultura.Sipa.EntidadesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_INFRAESTRUCTURA_ENTIDADES
	/// </summary>
	public class InfraestructuraEntidades 
	{
		#region Private Data Access Atributes

		private const String INF_ID_PARAM = "@INF_ID";
		private const String END_ID_PARAM = "@END_ID";
		private const String INF_NOMBRE_PARAM = "@INF_NOMBRE";
		private const String INF_DIRECTOR_PARAM = "@INF_DIRECTOR";
		private const String INF_ANO_INICIO_ACTIVIDADES_PARAM = "@INF_ANO_INICIO_ACTIVIDADES";
		private const String ZOP_ID_PARAM = "@ZOP_ID";
		private const String ZON_ID_PARAM = "@ZON_ID";
		private const String INF_AREA_PARAM = "@INF_AREA";
		private const String INF_DIRECCION_PARAM = "@INF_DIRECCION";
		private const String INF_TIENE_TELEFONO_PARAM = "@INF_TIENE_TELEFONO";
		private const String INF_NUMERO_TELEFONO_PARAM = "@INF_NUMERO_TELEFONO";
		private const String INF_TIENE_FAX_PARAM = "@INF_TIENE_FAX";
		private const String INF_NUMERO_FAX_PARAM = "@INF_NUMERO_FAX";
		private const String INF_APARTADO_AEREO_PARAM = "@INF_APARTADO_AEREO";
		private const String INF_TIENE_CORREO_PARAM = "@INF_TIENE_CORREO";
		private const String INF_CORREO_ELECTRONICO_PARAM = "@INF_CORREO_ELECTRONICO";
		private const String INF_CONFIRMACION_CORREO_PARAM = "@INF_CONFIRMACION_CORREO";
		private const String INF_PAGINA_WEB_PARAM = "@INF_PAGINA_WEB";
		private const String CAM_ID_PARAM = "@CAM_ID";
		private const String ARD_ID_PARAM = "@ARD_ID";

		#endregion Private Data Access Atributes

		/// <summary>
		/// Constructor de la clase ARTINFRAESTRUCTURAENTIDADES
		/// </summary>
		public InfraestructuraEntidades(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

		public InfraestructuraEntidadesData BuscarInfraestructuraEntidades(decimal parENT_ID)
		{
			InfraestructuraEntidadesData response = new InfraestructuraEntidadesData();
			SqlParameter param1 = new SqlParameter(END_ID_PARAM, parENT_ID);
			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_INFRAESTRUCTURA_ENTIDADES", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public int ExisteInfraestructuraEntidades(decimal parENT_ID)
		{
			SqlParameter param1 = new SqlParameter(END_ID_PARAM, parENT_ID);
			SqlParameter[] parameters = {param1};
			return Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES", parameters));
		}

		public InfraestructuraEntidadesData BuscarInfraestructuraEntidades(decimal decEND_ID, string strINF_NOMBRE, string strZonaD, string strZonaM, string strENT_NOMBRE)
		{
			InfraestructuraEntidadesData response = new InfraestructuraEntidadesData();
			SqlParameter param1 = new SqlParameter(END_ID_PARAM, decEND_ID);
			SqlParameter param2 = new SqlParameter(INF_NOMBRE_PARAM, strINF_NOMBRE);
			SqlParameter param3 = new SqlParameter("@ZON_IDD", strZonaD);
			SqlParameter param4 = new SqlParameter("@ZON_IDM", strZonaM);
			SqlParameter param5 = new SqlParameter("@ENT_NOMBRE", strENT_NOMBRE);
			SqlParameter[] parameters = {param1, param2, param3, param4, param5};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_INFRAESTRUCTURA_ENTIDADES_FILTRO", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public InfraestructuraEntidadesData BuscarInfraestructuraEntidadesPublico(decimal idEntidad, string nombreAuditorioTeatro, 
			int idPais, string idDepto, string idMunicipio, string rangoAforo)
		{			
			InfraestructuraEntidadesData response = new InfraestructuraEntidadesData();
			SqlParameter param1 = new SqlParameter(END_ID_PARAM, idEntidad);

			SqlParameter param2 = new SqlParameter(INF_NOMBRE_PARAM, nombreAuditorioTeatro);
			if (nombreAuditorioTeatro.Length == 0)
				param2.Value = DBNull.Value;

			SqlParameter param3 = new SqlParameter(ZOP_ID_PARAM, idPais);
			if (idPais == 0)
				param3.Value = DBNull.Value;

			SqlParameter param4 = new SqlParameter("@ZON_IDD", idDepto);
			if (idDepto.Length == 0)
				param4.Value = DBNull.Value;

			SqlParameter param5 = new SqlParameter("@ZON_IDM", idMunicipio);
			if (idMunicipio.Length == 0)
				param5.Value = DBNull.Value;

			SqlParameter param6 = new SqlParameter("@INF_AFORO", rangoAforo);
			if (rangoAforo.Length == 0)
				param6.Value = DBNull.Value;


			SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6};

			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_INFRAESTRUCTURA_ENTIDADES_PUBLICO", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public InfraestructuraEntidadesData ConsultarInfraestructuraEntidades(decimal parINF_ID)
		{
			InfraestructuraEntidadesData response = new InfraestructuraEntidadesData();

			SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);
			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_INFRAESTRUCTURA_ENTIDADES", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public decimal Adicionar(DataSet dsInfraestructuraEntidad)
		{		
			decimal decINF_ID = 0;

            InfraestructuraCampos objCampo = new InfraestructuraCampos(ConnectionString);
			InfraestructuraEntidadesData dtInfraestructura = (InfraestructuraEntidadesData)dsInfraestructuraEntidad.Tables[InfraestructuraEntidadesData.ART_INFRAESTRUCTURA_ENTIDADES_TABLE];
			InfraestructuraCamposData dtInfraestructuraCampos = (InfraestructuraCamposData)dsInfraestructuraEntidad.Tables[InfraestructuraCamposData.ART_INFRAESTRUCTURA_CAMPOS_TABLE];

			try
			{
				decINF_ID = Adicionar(dtInfraestructura);
				objCampo.AdicionarInfraestructuraCampos(dtInfraestructuraCampos, decINF_ID);				 
			}
			catch (Exception ex)
			{
				throw new ApplicationException(ex.Message,ex);
			}

			return decINF_ID;
		}


		private decimal Adicionar(InfraestructuraEntidadesData datos, params SqlTransaction[] transaccion)
		{
			decimal decINF_ID = 0;
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, SqlDbType.Decimal);
					param1.Direction = ParameterDirection.Output;
					SqlParameter param2 = new SqlParameter(END_ID_PARAM, row[InfraestructuraEntidadesData.END_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(INF_NOMBRE_PARAM, row[InfraestructuraEntidadesData.INF_NOMBRE_FIELD]);
					SqlParameter param4 = new SqlParameter(INF_DIRECTOR_PARAM, row[InfraestructuraEntidadesData.INF_DIRECTOR_FIELD]);
					SqlParameter param5 = new SqlParameter(INF_ANO_INICIO_ACTIVIDADES_PARAM, row[InfraestructuraEntidadesData.INF_ANO_INICIO_ACTIVIDADES_FIELD]);
					SqlParameter param6 = new SqlParameter(ZOP_ID_PARAM, row[InfraestructuraEntidadesData.ZOP_ID_FIELD]);
					SqlParameter param7 = new SqlParameter(ZON_ID_PARAM, row[InfraestructuraEntidadesData.ZON_ID_FIELD]);
					SqlParameter param8 = new SqlParameter(INF_AREA_PARAM, row[InfraestructuraEntidadesData.INF_AREA_FIELD]);
					SqlParameter param9 = new SqlParameter(INF_DIRECCION_PARAM, row[InfraestructuraEntidadesData.INF_DIRECCION_FIELD]);
					SqlParameter param10 = new SqlParameter(INF_TIENE_TELEFONO_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_TELEFONO_FIELD]);
					SqlParameter param11 = new SqlParameter(INF_NUMERO_TELEFONO_PARAM, row[InfraestructuraEntidadesData.INF_NUMERO_TELEFONO_FIELD]);
					SqlParameter param12 = new SqlParameter(INF_TIENE_FAX_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_FAX_FIELD]);
					SqlParameter param13 = new SqlParameter(INF_NUMERO_FAX_PARAM, row[InfraestructuraEntidadesData.INF_NUMERO_FAX_FIELD]);
					SqlParameter param14 = new SqlParameter(INF_APARTADO_AEREO_PARAM, row[InfraestructuraEntidadesData.INF_APARTADO_AEREO_FIELD]);
					SqlParameter param15 = new SqlParameter(INF_TIENE_CORREO_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_CORREO_FIELD]);
					SqlParameter param16 = new SqlParameter(INF_CORREO_ELECTRONICO_PARAM, row[InfraestructuraEntidadesData.INF_CORREO_ELECTRONICO_FIELD]);
					SqlParameter param17 = new SqlParameter(INF_CONFIRMACION_CORREO_PARAM, row[InfraestructuraEntidadesData.INF_CONFIRMACION_CORREO_FIELD]);
					SqlParameter param18 = new SqlParameter(INF_PAGINA_WEB_PARAM, row[InfraestructuraEntidadesData.INF_PAGINA_WEB_FIELD]);
					SqlParameter param19 = new SqlParameter(CAM_ID_PARAM, row[InfraestructuraEntidadesData.CAM_ID_FIELD]);
					SqlParameter param20 = new SqlParameter(ARD_ID_PARAM, row[InfraestructuraEntidadesData.ARD_ID_FIELD]);
					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20};

					if (transaccion.Length > 0)
					{
						SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ADICIONAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
					}
					else
					{
						SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
					}

					decINF_ID = decimal.Parse(param1.Value.ToString());
				}
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ADICIONAR_ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "PAS_ADICIONAR_ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}

			return decINF_ID;		
		}

		public decimal AdicionarInfraestructuraEntidades(InfraestructuraEntidadesData datos,
		                                                 InfraestructuraCamposData datosCampo)
		{
            InfraestructuraCampos objCampo = new InfraestructuraCampos(ConnectionString);

			SqlConnection objCon = new SqlConnection(this.ConnectionString);
			objCon.Open();
			SqlTransaction objTran = objCon.BeginTransaction(IsolationLevel.Serializable);

			decimal decINF_ID = 0;
			try
			{

				decINF_ID = Adicionar(datos,objTran);

				objCampo.AdicionarInfraestructuraCampos(datosCampo, decINF_ID, objTran);
				objTran.Commit();

				return (decINF_ID);
			}
			catch (SqlException sqlEx)
			{
				objTran.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (ApplicationException appEx)
			{
				objTran.Rollback();
				throw new ApplicationException(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES"), appEx);
			}
			catch (Exception ex)
			{
				objTran.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
			finally
			{
				objCon.Close();
			}
		}

		private bool Actualizar(InfraestructuraEntidadesData datos, params SqlTransaction[] transaccion)
		{
			bool blnResult = false;
			try 
			{
				foreach (DataRow row in datos.Rows)
				{
					
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, row[InfraestructuraEntidadesData.INF_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(END_ID_PARAM, row[InfraestructuraEntidadesData.END_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(INF_NOMBRE_PARAM, row[InfraestructuraEntidadesData.INF_NOMBRE_FIELD]);
					SqlParameter param4 = new SqlParameter(INF_DIRECTOR_PARAM, row[InfraestructuraEntidadesData.INF_DIRECTOR_FIELD]);
					SqlParameter param5 = new SqlParameter(INF_ANO_INICIO_ACTIVIDADES_PARAM, row[InfraestructuraEntidadesData.INF_ANO_INICIO_ACTIVIDADES_FIELD]);
					SqlParameter param6 = new SqlParameter(ZOP_ID_PARAM, row[InfraestructuraEntidadesData.ZOP_ID_FIELD]);
					SqlParameter param7 = new SqlParameter(ZON_ID_PARAM, row[InfraestructuraEntidadesData.ZON_ID_FIELD]);
					SqlParameter param8 = new SqlParameter(INF_AREA_PARAM, row[InfraestructuraEntidadesData.INF_AREA_FIELD]);
					SqlParameter param9 = new SqlParameter(INF_DIRECCION_PARAM, row[InfraestructuraEntidadesData.INF_DIRECCION_FIELD]);
					SqlParameter param10 = new SqlParameter(INF_TIENE_TELEFONO_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_TELEFONO_FIELD]);
					SqlParameter param11 = new SqlParameter(INF_NUMERO_TELEFONO_PARAM, row[InfraestructuraEntidadesData.INF_NUMERO_TELEFONO_FIELD]);
					SqlParameter param12 = new SqlParameter(INF_TIENE_FAX_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_FAX_FIELD]);
					SqlParameter param13 = new SqlParameter(INF_NUMERO_FAX_PARAM, row[InfraestructuraEntidadesData.INF_NUMERO_FAX_FIELD]);
					SqlParameter param14 = new SqlParameter(INF_APARTADO_AEREO_PARAM, row[InfraestructuraEntidadesData.INF_APARTADO_AEREO_FIELD]);
					SqlParameter param15 = new SqlParameter(INF_TIENE_CORREO_PARAM, row[InfraestructuraEntidadesData.INF_TIENE_CORREO_FIELD]);
					SqlParameter param16 = new SqlParameter(INF_CORREO_ELECTRONICO_PARAM, row[InfraestructuraEntidadesData.INF_CORREO_ELECTRONICO_FIELD]);
					SqlParameter param17 = new SqlParameter(INF_CONFIRMACION_CORREO_PARAM, row[InfraestructuraEntidadesData.INF_CONFIRMACION_CORREO_FIELD]);
					SqlParameter param18 = new SqlParameter(INF_PAGINA_WEB_PARAM, row[InfraestructuraEntidadesData.INF_PAGINA_WEB_FIELD]);
					SqlParameter param19 = new SqlParameter(CAM_ID_PARAM, row[InfraestructuraEntidadesData.CAM_ID_FIELD]);
					SqlParameter param20 = new SqlParameter(ARD_ID_PARAM, row[InfraestructuraEntidadesData.ARD_ID_FIELD]);

					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20};
				
					if (transaccion.Length > 0)
					{
						SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
					}
					else
					{
						SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
					}
				}

				blnResult = true;
			}
			catch (SqlException sqlEx)
			{				
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ACTUALIZAR_ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (Exception ex)
			{				
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "PAS_ACTUALIZAR_ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
			
			return blnResult;
		}

		public void ActualizarInfraestructuraEntidades(InfraestructuraEntidadesData datos,
		                                               InfraestructuraCamposData datosCampo)
		{
            InfraestructuraCampos objCampo = new InfraestructuraCampos(ConnectionString);
			SqlConnection objCon = new SqlConnection(this.ConnectionString);
			objCon.Open();
			SqlTransaction objTran = objCon.BeginTransaction(IsolationLevel.Serializable);

			try
			{
				decimal decINF_ID	= Convert.ToDecimal(datosCampo.Rows[0][InfraestructuraEntidadesData.INF_ID_FIELD]);
				Actualizar(datos,objTran);
				objCampo.ActualizarInfraestructuraCampos(datosCampo, decINF_ID, objTran);
				objTran.Commit();
			}
			catch (SqlException sqlEx)
			{
				objTran.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (ApplicationException appEx)
			{
				objTran.Rollback();
				throw new ApplicationException(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES"), appEx);
			}
			catch (Exception ex)
			{
				objTran.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
			finally
			{
				objCon.Close();
			}
		}

		public bool Actualizar(DataSet dstInfraestructura)
		{
			bool blnRespuesta = true;

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesData.ART_INFRAESTRUCTURA_ENTIDADES_TABLE))
			{
				InfraestructuraEntidadesData infraestructuraEntidadesData = (InfraestructuraEntidadesData)dstInfraestructura.Tables[InfraestructuraEntidadesData.ART_INFRAESTRUCTURA_ENTIDADES_TABLE];
				if (infraestructuraEntidadesData.Rows.Count > 0)
				{
                    InfraestructuraCampos infraestructuraCampos = new InfraestructuraCampos(ConnectionString);
					InfraestructuraCamposData infraestructuraCamposData = (InfraestructuraCamposData)dstInfraestructura.Tables[InfraestructuraCamposData.ART_INFRAESTRUCTURA_CAMPOS_TABLE];
					try 
					{
						decimal idInfraestructura = Convert.ToDecimal(infraestructuraEntidadesData.Rows[0][InfraestructuraEntidadesData.INF_ID_FIELD]);
						Actualizar(infraestructuraEntidadesData);
						infraestructuraCampos.ActualizarInfraestructuraCampos(infraestructuraCamposData,idInfraestructura);
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesCaracteristicasEspecificasData.ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS_TABLE))
			{
				InfraestructuraEntidadesCaracteristicasEspecificasData infraestructuraEntidadesCaracteristicasEspecificasData = (InfraestructuraEntidadesCaracteristicasEspecificasData)dstInfraestructura.Tables[InfraestructuraEntidadesCaracteristicasEspecificasData.ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS_TABLE];
				if (infraestructuraEntidadesCaracteristicasEspecificasData.Rows.Count > 0)
				{
                    InfraestructuraEntidadesCaracteristicasEspecificas infraestructuraEntidadesCaracteristicasEspecificas = new InfraestructuraEntidadesCaracteristicasEspecificas(ConnectionString);					
					try 
					{
						InfraestructuraEntidadesCaracteristicasEspecificasData dtCaracteristicasGenerales = infraestructuraEntidadesCaracteristicasEspecificas.ConsultarInfraestructuraEntidadesCaracteristicasEspecificas(Convert.ToDecimal(infraestructuraEntidadesCaracteristicasEspecificasData.Rows[0][InfraestructuraEntidadesCaracteristicasEspecificasData.INF_ID_FIELD]));
						if (dtCaracteristicasGenerales != null && dtCaracteristicasGenerales.Rows.Count > 0)
						{
							infraestructuraEntidadesCaracteristicasEspecificas.ActualizarInfraestructuraEntidadesCaracteristicasEspecificas(infraestructuraEntidadesCaracteristicasEspecificasData);
						}
						else
						{
							infraestructuraEntidadesCaracteristicasEspecificas.AdicionarInfraestructuraEntidadesCaracteristicasEspecificas(infraestructuraEntidadesCaracteristicasEspecificasData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesServiciosData.ART_INFRAESTRUCTURA_ENTIDADES_SERVICIOS_TABLE))
			{
				InfraestructuraEntidadesServiciosData infraestructuraEntidadesServiciosData = (InfraestructuraEntidadesServiciosData)dstInfraestructura.Tables[InfraestructuraEntidadesServiciosData.ART_INFRAESTRUCTURA_ENTIDADES_SERVICIOS_TABLE];
				if (infraestructuraEntidadesServiciosData.Rows.Count > 0)
				{
					InfraestructuraBoleteriaData infraestructuraBoleteriaData = (InfraestructuraBoleteriaData)dstInfraestructura.Tables[InfraestructuraBoleteriaData.ART_INFRAESTRUCTURA_BOLETERIA_TABLE];
					InfraestructuraFormasPagoData infraestructuraFormasPagoData = (InfraestructuraFormasPagoData)dstInfraestructura.Tables[InfraestructuraFormasPagoData.ART_INFRAESTRUCTURA_FORMAS_PAGO_TABLE];
					InfraestructuraSalonesEstarData infraestructuraSalonesEstarData = (InfraestructuraSalonesEstarData)dstInfraestructura.Tables[InfraestructuraSalonesEstarData.ART_INFRAESTRUCTURA_SALONES_ESTAR_TABLE];
					InfraestructuraDepositosData infraestructuraDepositosData = (InfraestructuraDepositosData)dstInfraestructura.Tables[InfraestructuraDepositosData.ART_INFRAESTRUCTURA_DEPOSITOS_TABLE];
					InfraestructuraTalleresData infraestructuraTalleresData = (InfraestructuraTalleresData)dstInfraestructura.Tables[InfraestructuraTalleresData.ART_INFRAESTRUCTURA_TALLERES_TABLE];

                    InfraestructuraEntidadesServicios infraestructuraEntidadesServicios = new InfraestructuraEntidadesServicios(ConnectionString);
					try 
					{
						InfraestructuraEntidadesServiciosData dtServicios = infraestructuraEntidadesServicios.ConsultarInfraestructuraEntidadesServicios(Convert.ToDecimal(infraestructuraEntidadesServiciosData.Rows[0][InfraestructuraEntidadesServiciosData.INF_ID_FIELD]));
						if (dtServicios != null && dtServicios.Rows.Count > 0)
						{
							infraestructuraEntidadesServicios.Actualizar(infraestructuraEntidadesServiciosData,infraestructuraBoleteriaData,
																										infraestructuraFormasPagoData, infraestructuraSalonesEstarData,
																										infraestructuraDepositosData, infraestructuraTalleresData);
						}
						else
						{
							infraestructuraEntidadesServicios.Adicionar(infraestructuraEntidadesServiciosData,infraestructuraBoleteriaData,
																										infraestructuraFormasPagoData,infraestructuraSalonesEstarData,
																										infraestructuraDepositosData, infraestructuraTalleresData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesEscenarioData.ART_INFRAESTRUCTURA_ENTIDADES_ESCENARIO_TABLE))
			{
				InfraestructuraEntidadesEscenarioData infraestructuraEntidadesEscenarioData = (InfraestructuraEntidadesEscenarioData)dstInfraestructura.Tables[InfraestructuraEntidadesEscenarioData.ART_INFRAESTRUCTURA_ENTIDADES_ESCENARIO_TABLE];
				if (infraestructuraEntidadesEscenarioData.Rows.Count > 0)
				{					
					InfraestructuraHombrosData infraestructuraHombrosData = (InfraestructuraHombrosData)dstInfraestructura.Tables[InfraestructuraHombrosData.ART_INFRAESTRUCTURA_HOMBROS_TABLE];

                    InfraestructuraEntidadesEscenario infraestructuraEntidadesEscenario = new InfraestructuraEntidadesEscenario(ConnectionString);
					try 
					{
						InfraestructuraEntidadesEscenarioData dtHombros = infraestructuraEntidadesEscenario.ConsultarInfraestructuraEntidadesEscenario(Convert.ToDecimal(infraestructuraEntidadesEscenarioData.Rows[0][InfraestructuraEntidadesEscenarioData.INF_ID_FIELD]));
						if (dtHombros != null && dtHombros.Rows.Count > 0)
						{
							infraestructuraEntidadesEscenario.Actualizar(infraestructuraEntidadesEscenarioData,infraestructuraHombrosData);
						}
						else
						{
							infraestructuraEntidadesEscenario.Adicionar(infraestructuraEntidadesEscenarioData,infraestructuraHombrosData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesTramoyaData.ART_INFRAESTRUCTURA_ENTIDADES_TRAMOYA_TABLE))
			{
				InfraestructuraEntidadesTramoyaData infraestructuraEntidadesTramoyaData = (InfraestructuraEntidadesTramoyaData)dstInfraestructura.Tables[InfraestructuraEntidadesTramoyaData.ART_INFRAESTRUCTURA_ENTIDADES_TRAMOYA_TABLE];
				if (infraestructuraEntidadesTramoyaData.Rows.Count > 0)
				{
					InfraestructuraTelonesData infraestructuraTelonesData = (InfraestructuraTelonesData)dstInfraestructura.Tables[InfraestructuraTelonesData.ART_INFRAESTRUCTURA_TELONES_TABLE];
                    InfraestructuraEntidadesTramoya infraestructuraEntidadesTramoya = new InfraestructuraEntidadesTramoya(ConnectionString);
					try 
					{
						InfraestructuraEntidadesTramoyaData dtTramoya = infraestructuraEntidadesTramoya.ConsultarInfraestructuraEntidadesTramoya(Convert.ToDecimal(infraestructuraEntidadesTramoyaData.Rows[0][InfraestructuraEntidadesTramoyaData.INF_ID_FIELD]));
						if (dtTramoya!= null && dtTramoya.Rows.Count > 0)
						{
							infraestructuraEntidadesTramoya.Actualizar(infraestructuraEntidadesTramoyaData,infraestructuraTelonesData);
						}
						else
						{
							infraestructuraEntidadesTramoya.Adicionar(infraestructuraEntidadesTramoyaData,infraestructuraTelonesData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}
			
			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesEquiposData.ART_INFRAESTRUCTURA_ENTIDADES_EQUIPOS_TABLE))
			{
				InfraestructuraEntidadesEquiposData infraestructuraEntidadesEquiposData = (InfraestructuraEntidadesEquiposData)dstInfraestructura.Tables[InfraestructuraEntidadesEquiposData.ART_INFRAESTRUCTURA_ENTIDADES_EQUIPOS_TABLE];
				if (infraestructuraEntidadesEquiposData.Rows.Count > 0)
				{
					InfraestructuraSonidoData infraestructuraSonidoData = (InfraestructuraSonidoData)dstInfraestructura.Tables[InfraestructuraSonidoData.ART_INFRAESTRUCTURA_SONIDO_TABLE];
					InfraestructuraInstrumentosData infraestructuraInstrumentosData = (InfraestructuraInstrumentosData)dstInfraestructura.Tables[InfraestructuraInstrumentosData.ART_INFRAESTRUCTURA_INSTRUMENTOS_TABLE];
					InfraestructuraProyectoresData infraestructuraProyectoresData = (InfraestructuraProyectoresData)dstInfraestructura.Tables[InfraestructuraProyectoresData.ART_INFRAESTRUCTURA_PROYECTORES_TABLE];

                    InfraestructuraEntidadesEquipos infraestructuraEntidadesEquipos = new InfraestructuraEntidadesEquipos(ConnectionString);
					try 
					{
						InfraestructuraEntidadesEquiposData dtEquipos = infraestructuraEntidadesEquipos.ConsultarInfraestructuraEntidadesEquipos(Convert.ToDecimal(infraestructuraEntidadesEquiposData.Rows[0][InfraestructuraEntidadesEquiposData.INF_ID_FIELD]));
						if (dtEquipos != null && dtEquipos.Rows.Count > 0)
						{
							infraestructuraEntidadesEquipos.Actualizar(infraestructuraEntidadesEquiposData,infraestructuraSonidoData,
								infraestructuraInstrumentosData,infraestructuraProyectoresData);
						}
						else
						{
							infraestructuraEntidadesEquipos.Adicionar(infraestructuraEntidadesEquiposData,infraestructuraSonidoData,
								infraestructuraInstrumentosData,infraestructuraProyectoresData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			if (dstInfraestructura.Tables.Contains(InfraestructuraEntidadesPublicosData.ART_INFRAESTRUCTURA_ENTIDADES_PUBLICOS_TABLE))
			{
				InfraestructuraEntidadesPublicosData infraestructuraEntidadesPublicosData = (InfraestructuraEntidadesPublicosData)dstInfraestructura.Tables[InfraestructuraEntidadesPublicosData.ART_INFRAESTRUCTURA_ENTIDADES_PUBLICOS_TABLE];
				if (infraestructuraEntidadesPublicosData.Rows.Count > 0)
				{
					InfraestructuraPoblacionData infraestructuraPoblacionData = (InfraestructuraPoblacionData)dstInfraestructura.Tables[InfraestructuraPoblacionData.ART_INFRAESTRUCTURA_POBLACION_TABLE];
                    InfraestructuraEntidadesPublicos infraestructuraEntidadesPublicos = new InfraestructuraEntidadesPublicos(ConnectionString);
					try 
					{
						InfraestructuraEntidadesPublicosData dtPublicos = infraestructuraEntidadesPublicos.ConsultarInfraestructuraEntidadesPublicos(Convert.ToDecimal(infraestructuraEntidadesPublicosData.Rows[0][InfraestructuraEntidadesPublicosData.INF_ID_FIELD]));
						if (dtPublicos != null && dtPublicos.Rows.Count > 0)
						{
							infraestructuraEntidadesPublicos.Actualizar(infraestructuraEntidadesPublicosData,infraestructuraPoblacionData);
						}
						else
						{
							infraestructuraEntidadesPublicos.Adicionar(infraestructuraEntidadesPublicosData,infraestructuraPoblacionData);
						}
					}
					catch(Exception ex)
					{
						blnRespuesta = false;
						throw new ApplicationException(ex.Message,ex);
					}
				}
			}

			return blnRespuesta;
		}

		/// <summary>
		/// Elimina un registro de la entidad Artinfraestructuraentidades
		/// </summary>
		/// <param name="parINF_ID">Identificador del registro
		public void EliminarInfraestructuraEntidades(decimal parINF_ID)
		{
			SqlConnection objConnection = new SqlConnection(ConnectionString);
			objConnection.Open();
			SqlTransaction objTrans = objConnection.BeginTransaction();
			try
			{
				SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);
				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_AREAS_ARTISTICAS", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_BOLETERIA", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_CAMPOS", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_DEPOSITOS", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_INSTRUMENTOS", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_POBLACION", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_PROYECTORES", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_SALONES_ESTAR", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_SONIDO", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_TALLERES", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_TELONES", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
				SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_HOMBROS", parameters);
				objTrans.Commit();
			}
			catch (SqlException sqlEx)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (ApplicationException appEx)
			{
				objTrans.Rollback();
				throw new ApplicationException(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES"), appEx);
			}
			catch (Exception ex)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
			finally
			{
				objConnection.Close();
			}
		}

		public void EliminarInfraestructuraEntidades(ArrayList arrIDs)
		{
			SqlConnection objConnection = new SqlConnection(ConnectionString);
			objConnection.Open();
			SqlTransaction objTrans = objConnection.BeginTransaction();
			try
			{
				foreach (object Item in arrIDs)
				{
					SqlParameter param1 = new SqlParameter(INF_ID_PARAM, decimal.Parse(Item.ToString()));
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_AREAS_ARTISTICAS", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_BOLETERIA", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_CAMPOS", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_DEPOSITOS", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_INSTRUMENTOS", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_POBLACION", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_PROYECTORES", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_SALONES_ESTAR", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_SONIDO", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_TALLERES", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_TELONES", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_HOMBROS", parameters);
				}
				objTrans.Commit();
			}
			catch (SqlException sqlEx)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch (ApplicationException appEx)
			{
				objTrans.Rollback();
				throw new ApplicationException(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_INFRAESTRUCTURA_ENTIDADES"), appEx);
			}
			catch (Exception ex)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
			finally
			{
				objConnection.Close();
			}
		}

		public void EliminarPorIdInfraestructura(decimal decIdInfraestructura)
		{
            InfraestructuraEntidadesCaracteristicasEspecificas infraestructuraEntidadesCaracteristicasEspecificas = new InfraestructuraEntidadesCaracteristicasEspecificas(ConnectionString);
            InfraestructuraBoleteria infraestructuraBoleteria = new InfraestructuraBoleteria(ConnectionString);
            InfraestructuraFormasPago infraestructuraFormasPago = new InfraestructuraFormasPago(ConnectionString);
            InfraestructuraSalonesEstar infraestructuraSalonesEstar = new InfraestructuraSalonesEstar(ConnectionString);
            InfraestructuraDepositos infraestructuraDepositos = new InfraestructuraDepositos(ConnectionString);
            InfraestructuraTalleres infraestructuraTalleres = new InfraestructuraTalleres(ConnectionString);
            InfraestructuraEntidadesServicios infraestructuraEntidadesServicios = new InfraestructuraEntidadesServicios(ConnectionString);
            InfraestructuraHombros infraestructuraHombros = new InfraestructuraHombros(ConnectionString);
            InfraestructuraEntidadesEscenario infraestructuraEntidadesEscenario = new InfraestructuraEntidadesEscenario(ConnectionString);
            InfraestructuraTelones infraestructuraTelones = new InfraestructuraTelones(ConnectionString);
            InfraestructuraEntidadesTramoya infraestructuraEntidadesTramoya = new InfraestructuraEntidadesTramoya(ConnectionString);
            InfraestructuraSonido infraestructuraSonido = new InfraestructuraSonido(ConnectionString);
            InfraestructuraInstrumentos infraestructuraInstrumentos = new InfraestructuraInstrumentos(ConnectionString);
            InfraestructuraProyectores infraestructuraProyectores = new InfraestructuraProyectores(ConnectionString);
            InfraestructuraEntidadesEquipos infraestructuraEntidadesEquipos = new InfraestructuraEntidadesEquipos(ConnectionString);
            InfraestructuraPoblacion infraestructuraPoblacion = new InfraestructuraPoblacion(ConnectionString);
            InfraestructuraEntidadesPublicos infraestructuraEntidadesPublicos = new InfraestructuraEntidadesPublicos(ConnectionString);
            InfraestructuraCampos infraestructuraCampos = new InfraestructuraCampos(ConnectionString);
			try
			{
				infraestructuraEntidadesCaracteristicasEspecificas.EliminarInfraestructuraEntidadesCaracteristicasEspecificas(decIdInfraestructura);
				infraestructuraBoleteria.EliminarInfraestructuraBoleteria(decIdInfraestructura);
				infraestructuraFormasPago.EliminarInfraestructuraFormasPago(decIdInfraestructura);
				infraestructuraSalonesEstar.EliminarInfraestructuraSalonesEstar(decIdInfraestructura);
				infraestructuraDepositos.EliminarInfraestructuraDepositos(decIdInfraestructura);
				infraestructuraTalleres.EliminarInfraestructuraTalleres(decIdInfraestructura);
				infraestructuraEntidadesServicios.EliminarInfraestructuraEntidadesServicios(decIdInfraestructura);
				infraestructuraHombros.EliminarInfraestructuraHombros(decIdInfraestructura);
				infraestructuraEntidadesEscenario.EliminarInfraestructuraEntidadesEscenario(decIdInfraestructura);
				infraestructuraTelones.EliminarInfraestructuraTelones(decIdInfraestructura);
				infraestructuraEntidadesTramoya.EliminarInfraestructuraEntidadesTramoya(decIdInfraestructura);
				infraestructuraSonido.EliminarInfraestructuraSonido(decIdInfraestructura);
				infraestructuraInstrumentos.EliminarInfraestructuraInstrumentos(decIdInfraestructura);
				infraestructuraProyectores.EliminarInfraestructuraProyectores(decIdInfraestructura);
				infraestructuraEntidadesEquipos.EliminarInfraestructuraEntidadesEquipos(decIdInfraestructura);
				infraestructuraPoblacion.EliminarInfraestructuraPoblacion(decIdInfraestructura);
				infraestructuraEntidadesPublicos.EliminarInfraestructuraEntidadesPublicos(decIdInfraestructura);
				infraestructuraCampos.EliminarInfraestructuraCampos(decIdInfraestructura);
				Eliminar(decIdInfraestructura);	
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "EliminarPorIdInfraestructura"), ex);
			}
		}

		public void EliminarPorIdEntidad(decimal parEND_ID)
		{			
			try
			{
				InfraestructuraEntidadesData objData = ConsultarInfraestructuraEntidades(parEND_ID);
				if (objData != null)
				{
					foreach (DataRow fila in objData.Rows)
					{						
						EliminarPorIdInfraestructura(Convert.ToDecimal(fila[InfraestructuraEntidadesData.INF_ID_FIELD]));
					}
				}
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "EliminarPorIdEntidad"), ex);
			}
		}

		private void Eliminar(decimal parINF_ID, params SqlTransaction[] transaction)
		{
			SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);
			SqlParameter[] parameters = {param1};		
			try
			{
				if (transaction.Length == 0)
				{
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
				}
				else
				{
					SqlHelper.ExecuteNonQuery(transaction[0], CommandType.StoredProcedure, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES", parameters);
				}
			}
			catch (SqlException sqlEx)
			{				
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES"), sqlEx);
			}
			catch(Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "PAS_ELIMINAR_ART_INFRAESTRUCTURA_ENTIDADES"), ex);
			}
		}

		public bool ExisteInfraestructuraCaracterizacion(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_GENERALES", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraTipo(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_CARACTERISTICAS_ESPECIFICAS", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraServicios(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_SERVICIOS", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraEscenario(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_ESCENARIO", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraTramoya(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_TRAMOYA", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraEquipos(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_EQUIPOS", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public bool ExisteInfraestructuraPublicos(int parINF_ID, SqlParameter[] parameters)
		{
			bool boolExiste = false;

			if (Convert.ToInt32(SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.StoredProcedure, "PAS_EXISTE_ART_INFRAESTRUCTURA_ENTIDADES_PUBLICOS", parameters)) != 0)
				boolExiste = true;
			else
				boolExiste = false;

			return boolExiste;

		}

		public string ConsultarEntidadesInfraestructuraFichasPorGrabar(int parINF_ID)
		{
			string strFichasPorGrabar = string.Empty;

			SqlParameter param1 = new SqlParameter(INF_ID_PARAM, parINF_ID);
			SqlParameter[] parameters = {param1};

			if (!ExisteInfraestructuraCaracterizacion(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.Caracterizacion) + ", ";
			}

			if (!ExisteInfraestructuraTipo(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.TipoCapacidad) + ", ";;
			}

			if (!ExisteInfraestructuraServicios(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.Servicios) + ", ";
			}

			if (!ExisteInfraestructuraEscenario(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.Escenario) + ", ";
			}

			if (!ExisteInfraestructuraTramoya(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.Tramoya) + ", ";
			}

			if (!ExisteInfraestructuraEquipos(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.Equipos) + ", ";
			}

			if (!ExisteInfraestructuraPublicos(parINF_ID, parameters))
			{
				strFichasPorGrabar += EnumHelper.GetDescription(Utilidad.FichasInformacionInfraestructura.PublicosIngresos) + ", ";
			}

			if (strFichasPorGrabar.Length > 0)
				strFichasPorGrabar = strFichasPorGrabar.Substring(0,strFichasPorGrabar.Length-2);

			return strFichasPorGrabar;

		}

	}
}